home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / benchmarks / fork / fork.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-04-10  |  1021 b   |  54 lines

  1. /* $Header: /sprite/src/benchmarks/fork/RCS/fork.c,v 1.3 92/04/10 15:46:06 kupfer Exp $ */
  2.  
  3. #include <stdio.h>
  4. #include <sys/types.h>
  5. #include <sys/file.h>
  6. #include <sys/time.h>
  7. #ifdef sprite
  8. #include "proc.h"
  9. #endif
  10.  
  11.  
  12. main(argc, argv)
  13.     int argc;
  14.     char *argv[];
  15. {
  16.     register     int     i;
  17.     struct timeval startTime, endTime;
  18.     int        pid;
  19.     int        numForks = 1000; /* number of times to fork */
  20.  
  21.     if (argc > 1) {
  22.     numForks = atoi(argv[1]);
  23.     }
  24.     gettimeofday(&startTime,0);
  25.     for (i = 0; i < numForks; i++) { 
  26.     pid = fork();
  27.     if (pid == 0) {
  28.         /*
  29.          * child.
  30.          */
  31.         _exit(0);
  32.     } 
  33.     /*
  34.      * Parent 
  35.      */
  36.     wait(0);
  37.     }
  38.     gettimeofday(&endTime,0);
  39.     fixtime(&startTime,&endTime);
  40.     printf("fork test %d forks time %4d.%03d\n", numForks, 
  41.     endTime.tv_sec, endTime.tv_usec/1000);
  42. }
  43.  
  44. fixtime(s, e)
  45.         struct  timeval *s, *e;
  46. {
  47.  
  48.         e->tv_sec -= s->tv_sec;
  49.         e->tv_usec -= s->tv_usec;
  50.         if (e->tv_usec < 0) {
  51.                 e->tv_sec--; e->tv_usec += 1000000;
  52.         }
  53. }
  54.